package com.zl.csMall.product.commodity.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zl.csMall.product.commodity.po.Commodity;
import com.zl.csMall.product.commodity.vo.CountVisitorsVo;

import java.util.List;
import java.util.Map;

public interface CommodityService extends IService<Commodity> {

    /**
     * @description: 根据ID删除商品及其图片文件
     * @param id 商品ID
     * @author ChenNing
     * @date: 2025-10-20 10:53
     */
    boolean deleteById(long id);

    /**
     * @description: 获取商品简单列表（仅处理主图）
     * @author ChenNing
     * @date: 2025-10-20 14:46
     */
    List<Map<String, Object>> getSimpleList(LambdaQueryWrapper<Commodity> queryWrapper);

    /**
     * @description: 获取商品简单列表分页
     * @author ChenNing
     * @date: 2025-10-20 14:00
     */
    Page<Map<String, Object>> getSimplePage(LambdaQueryWrapper<Commodity> queryWrapper, Page page);

    /**
     * @description: 根据商品ID查询商品
     * @param id 商品ID
     * @author ChenNing
     * @date: 2025-10-20 16:39
     */
    Commodity getCommodity(long id);

    /**
     * @description: 根据商品ID查询商品（缩减版：ID、编号、名称、主图）
     * @param id 商品ID
     * @author ChenNing
     * @date: 2025-10-21 15:59
     */
    Map<String, Object> getSimpleCommodity(long id);

    /**
     * @description: 获取用户历史浏览的全部商品
     * @param userId 用户ID
     * @author ChenNing
     * @date: 2025-10-21 13:34
     */
    Page<Map<String, Object>> getHistoryByUserId(long userId, Page page);

    /**
     * @description: 获取用户收藏的全部商品
     * @param userId 用户ID
     * @author ChenNing
     * @date: 2025-10-21 14:21
     */
    Page<Map<String, Object>> getFavoritesByUserId(long userId, Page page);

    /**
     * @description: 查询商品浏览数据（按商品浏览量从大至小）
     * @author ChenNing
     * @date: 2025-10-21 15:39
     */
    Page<CountVisitorsVo> countVisitors(Page page);


}
